#ifndef SERVERDIALOG_H
#define SERVERDIALOG_H

#include <QDialog>
#include <QTcpServer>
#include <QTcpSocket>
#include <QDebug>
#include <QList>
#include <QTimer>

QT_BEGIN_NAMESPACE
namespace Ui {
class ServerDialog;
}
QT_END_NAMESPACE

class ServerDialog : public QDialog
{
    Q_OBJECT

public:
    ServerDialog(QWidget *parent = nullptr);
    ~ServerDialog();

private slots:
    // 开启创建服务器按钮
    void enableCreateBtn();

    // 创建服务器按钮的槽函数
    void on_createButton_clicked();

    // 响应客户端连接的槽函数
    void onNewConnection();

    // 接收客户端消息槽函数
    void onReadyRead();

    // 转发消息给其他客户端
    void sendMessage(const QByteArray& buf);

    // 定时器到时的槽函数
    void onTimeout();

private:
    Ui::ServerDialog *ui;
    QTcpServer tcpServer;
    quint16 port;               // 端口
    // 保存所有在线客户端的socket(套接字)
    QList<QTcpSocket*> tcpClientList;
    // 定时器对象，定时遍历客户端socket，移除已断开连接的socket
    QTimer timer;
};

#endif // SERVERDIALOG_H
